package com.zjpavt.client.util;

import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.io.IOException;
import java.util.Properties;

/**
 * @author zjpavt
 */
@Slf4j
public class Consts {


    /* * * * * * * * *
     * ==============*
     * PROP KEY      *
     * ==============*
     * * * * * * * * */
    /**
     * 光照强度阈值 key
     */
    public static final String KEY_LIGHT_THRESHOLD = "light_threshold";
    /**
     * 达到光照强度阈值时的指令 key
     */
    public static final String KEY_LIGHT_THRESHOLD_COMMAND = "light_threshold_command";
    /**
     * 达到光照强度阈值时的指令的持续时间 key
     */
    public static final String KEY_LIGHT_THRESHOLD_COMMAND_TIME = "light_threshold_command_time";
    /**
     * 备选IP地址
     */
    public static final String KEY_BACKUP_IP_ADDR = "backup_ip_addr";
    /**
     * 备选端口号
     */
    public static final String KEY_BACKUP_IP_PORT = "backup_port";
    /**
     * 温度低阈值prop key
     */
    public static final String KEY_TMP_THRESHOLD_LOW = "tmp_threshold_low";
    /**
     * DEVICE ID prop key
     */
    public static final String KEY_DEVICE_ID = "device_id";
    /**
     * 上次存放的k指令
     */
    public static final String KEY_K_COMMAND_NOT_WITH_TIME = "k_not_with_time";
    /**
     * 上次存放的k指令的结束时间
     */
    public static final String KEY_K_COMMAND_NWT_END_TIME = "k_not_with_time_endtime";
    /**
     * 当前存放的有效时长的k指令
     */
    public static final String KEY_K_COMMAND_WITH_TIME = "k_with_time";
    /**
     * 当前有效k指令的结束时间
     */
    public static final String KEY_K_COMMAND_WT_END_TIME = "k_with_time_endtime";
    /**
     * 文件的版本号key值
     */
    public static final String KEY_VERSION = "version";
    /**
     * 当前交互收到服务器的指令
     */
    public static final String KEY_INTERACTION_RECEIVE_MSG = "receiveMsg";
    /**
     * 当前交互发送服务器的指令
     */
    public static final String KEY_INTERACTION_SEND_MSG = "sendMsg";
    /**
     * 定时器开启时间 key
     */
    public static final String KEY_TIMER_START_TIME = "timer_start_time";
    /**
     * 定时器关闭时间 key
     */
    public static final String KEY_TIMER_CLOSE_TIME = "timer_close_time";
    /**
     * 当天定时指令 key
     */
    public static final String KEY_TIMER_COMMAND = "timer_command";
    /**
     * 设备手动操作有效时间
     */
    public static final String KEY_DEVICE_MANUAL_OPERATION_TIME = "device_manual_operation_time";/**
     * 设备手动操作有效时间
     */
    public static final String KEY_IS_HAN_ZHONG_DEVICE = "is_han_zhong_device";
    /**
     * 屏幕显示第四页的select的名称
     */
    public static final String SELECT_NAME_PAGE_FOUR = "gps_data";
    /**
     * 屏幕显示第十一页的select的名称
     */
    public static final String SELECT_NAME_PAGE_ELEVEN = "net";

    /* * * * * * * * *
     * ==============*
     * 常量           *
     * ==============*
     * * * * * * * * */
    /**
     * Jni返回的错误代码
     */
    public static final String ERROR_CODE = "ERROR";
    /**
     * 时间格式化和解析
     */
    public static final String TIME_FORMAT = "HH:mm:ss";
    /**
     * 日期格式化和解析
     */
    public static final String DATE_FORMAT = "yyyy-MM-dd";
    /**
     * H指令和I指令使用的日期格式
     */
    public static final String TIMESET_FORMAT = "yyyyMMddHHmmss";
    /**
     * 传感器无效值
     */
    public static final int VALUE_INVALID = -1;
    /**
     * 默认通道数 设备上的LED数目
     */
    public static final int DEFAULT_LOOP_NUM = 12;

    /**
     * 最大通道数长度240 (3位)
     */
    public static final int DEFAULT_LOOP_NUM_LENGTH = 3;

    /**
     * K指令失效时长(默认1h)
     */
    public static final int K_COMMAND_TIMEOUT = 60 * 60 * 1000;

    /**
     * 手动操作默认有效时长（s）
     */
    public static int DEFAULT_MANUAL_OPERATE_INVALID_TIME_SEC;
    /**
     * 汉中的设备电压电流检测模块有特殊的处理逻辑
     */
    public static boolean IS_HAN_ZHONG_DEVICE = false;

    /**
     * 是否处于调试模式 取决于是否有一个名为 /root/pavt/info/debug 的文件
     */
    public static boolean IS_DEBUG = false;
    /**
     * 设备回路数KEY_ELEC_CHANNEL_IS_TESTING
     */
    public static final String  KEY_ELEC_CHANNEL_IS_TESTING = "elec_Channel_Is_Testing";
    /**
     * 默认设备回路数
     */
    public static final String  KEY_DEFAULT_ELEC_CHANNEL_IS_TESTING = "default_elec_Channel_Is_Testing";

    static{
        try {
            Properties properties = PropertiesUtil
            .getConfigProperties(ClientConfig.CONFIG_PATH + ClientConfig.DEVICE_STATUS_CONFIG_NAME);
//            默认手动指令时间为3600s
            DEFAULT_MANUAL_OPERATE_INVALID_TIME_SEC =
            Integer.parseInt(properties.getProperty(KEY_DEVICE_MANUAL_OPERATION_TIME,"3600"));
            IS_DEBUG = new File("/root/pavt/info/debug").exists();
            log.info("DEFAULT_MANUAL_OPERATE_INVALID_TIME_SEC:"  + DEFAULT_MANUAL_OPERATE_INVALID_TIME_SEC);
//            汉中的设备电压电流检测模块有特殊的处理逻辑
//          是否处于调试模式 取决于是否有一个名为 /root/pavt/info/debug 的文件
            if (IS_DEBUG) {
                log.error("is in debug model!==============================================================================");
            }
        } catch (IOException e) {
            log.warn(LoggerUtil.convertException2String(e));
        }
    }

    public static final String NO_DEVICE = "NO DEVICE";
}
